1. Field of the Invention
The invention relates to a method and apparatus for bridging between networks. More particularly, the invention relates to a method and apparatus for connecting computer networks of dissimilar types.
2. Description of the Related Art
This text refers to IEEE standards, Requests for Comments (RFCs) and Internet-Drafts. These are all standard sources in the networking field. IEEE standards are published by the Institute of Electrical and Electronics Engineers, Inc., 345 East 47th Street, New York, N.Y. 10017, USA. RFCs are a series of notes about the Internet, and include the specification documents of protocols associated with the Internet as these are defined by the Internet Engineering Task Force (IETF). RFCs are published by the Information Sciences Institute (ISI) of the University of Southern California (USC). Internet-Drafts are working documents of the Internet Engineering Task Force (IETE) and its working groups (and of certain other bodies) and may form the basis for later RFCs. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. Both RFCs and current Internet-Drafts are obtainable through the World Wide Web site of the IETF, http://www.ietf org/.
Computer networking is complex, and for practical tractability is divided into a number of subtasks. Conventionally, a network is divided into layers, with each layer being responsible for providing a service to the layer above it, the layer itself calling on the services of the layer below it.
The generally accepted model for networking is the OSI (Open Systems Interconnection) Reference Model defined by ISO. This defines seven layers, as are illustrated in FIG. 1. Each layer 1 at a node 4 communicates with its peer layer 1 at another node through the use of a protocol 2. Such communication is accomplished through direct communication with the layer below. The communication 3 between overlying layers is known as an interface.
The layers as defined in the OSI are as follows.
This operates to transmit unstructured bits of information across a link. It is relevant to similar fundamental structural arrangements such as connector type and identification of the purpose of different wires in a cable.
This operates to transmit basic structural blocks of information across a link. This is the critical layer for communication within a local area network (LAN), and deals with addressing within a LAN, for example. A sublayer of the data link layer is the medium access control (MAC) layer, which addresses issues specific to a particular type of LAN.
This operates so as to enable any pair of systems in the network to communicate with each other. The dominant network layer protocol is the Internet Protocol (IP). The network layer is responsible for issues such as route calculation and packet fragmentation and reassembly.
This operates to achieve a reliable communication stream between two systems. The transport layer deals with issues such as lost packets and packet reordering.
These are used for higher level services (particular communication patterns, data representations, standardisation of applications) and are not relevant to the communication issues under consideration here.
Communication within a single LAN is handled by the data link layer. A basic problem in networking is communication between two or more LANs, or between a LAN and a network backbone. If two LANs to be connected together are of the same type or sufficiently similar and share the same MAC level addressing, then a bridge can be used to link the LANs together. A bridge is a device which connects two LANs (or, rather, nodes on two LANs) at the level of the data link layer. IEEE 802.1d is a standard defining such bridges (termed xe2x80x9ctransparentxe2x80x9d bridges, because nodes on the network are unaware of the existence of such bridges, the nodes xe2x80x9cseeingxe2x80x9d other nodes directly across the bridge)xe2x80x94bridges not conforming to the IEEE 802.1d can of course be constructed, but are not standard network components. The operation of a basic bridge is described below with reference to FIG. 2.
The bridge 21 connects two LAN segments 22, 23, accessing each segment via a separate port 25, 26. Each LAN segment has a number of nodes 24. The bridge 21 listens to every packet transmitted on either of the LAN segments 22 and 23. For each packet received, the bridge stores the MAC address in the packet""s source address field in a cache, together with the port on which the packet is received. The bridge 21 then looks through its cache to find the MAC address in the packet""s destination address field. If the destination address is not found in the cache, the packet is forwarded out through all the ports except the one on which it was received. If the destination address is found in the cache, the packet is forwarded only through the appropriate portxe2x80x94however, if the xe2x80x9cappropriate portxe2x80x9d is the one on which the packet was received (meaning that the packet was for transmission between nodes on a single LAN segment), the packet is dropped.
The effect of this functionality is that the bridge can learn MAC addresses, and does not require configuration. For example, consider that bridge 21 has just been put into place, without knowledge of any node addresses. Say that the first packet sent is from node A to node B. This packet will be received by the bridge 21 through the port 25. The bridge 21 will then store in its cache the MAC address of node A, which is in the source address field of the packet, together with the datum that this address is accessible through the port leading to LAN segment 22. The packet will then be forwarded on all other ports (in this case, the port 26 leading to LAN segment 23), as the bridge will have no record of the address of node B in its cachexe2x80x94in this case, this communication is unnecessary for receipt by node B, as node B is on the same LAN, segment as node A. Say that the next packet is sent by node D to node A. The packet will be received by the bridge 21 through the port 26 corresponding to LAN segment 23, and the MAC address of node D and the datum that this address is accessible through the port 26 leading to LAN segment 23 are recorded in the bridge cache. The destination address, that of node A, is already in the bridge cache. The bridge 21 will thus transmit the packet out through the port 25 connecting to LAN segment 22, and would not transmit it through any other port. If the next packet is from node B to node A, the bridge 21 will capture the relevant data for node B in the cachexe2x80x94it will also know from the cache that node B and node A are on the same LAN segment 22, and hence will not forward the packet at all.
The bridge has considerable advantages: it requires (in its basic operation) no configuration, as it can operate immediately and learn the information it requires to operate with full efficiency, and it is transparent to the nodes (in that the node does not perceive any difference between communication on its own LAN segment and communication through the bridge to another LAN segment). Such a bridge does however rely for its operation on similar MAC level addressing on each LAN segment, as otherwise messages forwarded across the bridge will be unintelligible. Many types of bridge design have been proposed, though alternative designs differing from that described above do not fall within the IEEE 802.1d standard. One particular design was proposed in RFC 925 by J. Postel of ISI. The RFC 925 scheme proposes bridging between LAN segments, but storing Internet (IP) addresses, rather than simply MAC level addresses, in the bridge and using network layer protocols to effect bridging. A conventional bridge is a more effective choice than an RFC 925 bridge for connecting LAN segments of similar type locally because use of a network protocol introduces additional complexity and because an IEEE 802.1d bridge can easily be implemented in hardware alone: for more complex networks, the effective choice was found to be routing (as discussed below). The RFC 925 scheme has in consequence not been applied in any standard.
Where the LAN segments are of different network types (or where the network is complex), the current general approach is to connect at the network layer level, rather than at the data link layer level. This is done by means of a router. Connection between LAN segments of different types using a router is shown in FIG. 3.
FIG. 3 shows connection of LAN segments 32, 33 of different network types by means of a router 31. Each LAN segment has a number of nodes 34. At the network layer, the protocol most commonly used is Internet Protocol (IP). Each node 34 has an IP address. An IP address has two parts: a network component and a host component. Each node on a LAN needs to have the same network component: consequently nodes A and B have the same network component xe2x80x9c2xe2x80x9d. The router 31 also needs to have an IP address for it to be able to send and receive messages, and for the router 31 to communicate as part of LAN 32, it needs to have an address with the same network component as the nodes in LAN 32. However, the router 31 also needs to communicate as a node on LAN 33, so it needs a further IP address with network component xe2x80x9c3xe2x80x9dxe2x80x94the network component for all nodes on LAN 33. The router 31 hence needs to be configured with the network component associated with the LANs reachable through each of its ports.
Various possibilities exist for communication between nodes, but a normal arrangement would take the following form. Node A wishes to communicate with node B, for which it has the IP address, but not the data link level address. Node A broadcasts an ARP (Address Resolution Protocol) message on LAN 32 asking for node B (specifically, asking the node with IP address 2.0.0.2 to provide its data link layer address). Node B will reply, communication will take place, and router 31 is not involved (beyond receiving, and ignoring, the broadcast ARP message). Node D now wishes to communicate with node A. Node D will be aware that node A has a different network address, and will either be preconfigured to send its message directly to the router 31 (for whose MAC address it will send an ARP request), or may alternatively send an ARP request to which the router 31 (recognising the addressee as being on a different network) will respond. The router will in any case eventually receive a packet from D, and will then send this to the data link layer address of node A if this is already known by the router. If this is not already known the router 31 will send out an ARP request on LAN segment 32 to find the data link layer address for node A. When equipped with the destination data link layer address, the router 31 can forward packets from node D to node A.
As communication through a router is at the level of Internet Protocol (supported by both LAN 32 and LAN 33) and communication at the data link layer level is only between the router 31 (which is adapted to support both the data link layer protocols of LAN 32 and LAN 33) and the individual nodes, communication between nodes on different types of LAN segment is possible. However, router 31 requires significant configuration before use (for example, to provide it with network components for each LAN segment) and it is significantly more complex than a bridge. A further disadvantage of routing is that it is not possible to move a node from one network segment to another without reconfiguration for the node (specifically, without changing its IP address), whereas such movement between networks without node reconfiguration is generally possible for bridges (at least for movement within the same IP domain).
A bridge-like internet protocol router (BLIP) is described in European Patent Application No. 91305968.9 (EP-A2-0456201). The BLIP is devised to have a combination of bridge and router behaviours, and has the particular purpose of preventing the excess propagation of ARP requests (xe2x80x9cARP stormxe2x80x9d) perceived to provide a technical problem for transparent bridges. The BLIP bases packet forwarding decisions on IP network/subnet addresses alone, and blocks propagation of ARP requests. When a source node requests a data link layer address for a node on a different segment of a LAN by means of an ARP request, the local BLIP responds with a special data link layer address. When the BLIP receives a packet with this special data link layer address, the BLIP forwards the message according to IP subnet address (essentially, it routes) along a spanning tree to other BLIPsxe2x80x94the BLIP at the final destination segment replaces the special data link layer address with the destination node data link layer address (directly if known, or after an ARP request on that segment). In this aspect, BLIP behaviour is router-like.
Particular difficulties are caused if a LAN segment employs a data link layer protocol adapted for dynamic addressing. Such a protocol is EEEE1394 (hereafter xe2x80x9c1394xe2x80x9d, more particularly as described in IEEE Standard 1394-1995, Standard for a High Performance Serial Bus) which has data link layer addressing very different from that of IEEE802.3 (hereafter xe2x80x9c802.3xe2x80x9dxe2x80x94used as a generic term for protocols of the ethernet type). 802.3 LANs use static, globally unique 48 bit MAC addresses, whereas 1394 LANs use 16 bit Node IDs which are dynamically reassigned whenever a xe2x80x9cbus resetxe2x80x9d occurs. A bus reset is an event typically associated with a change in the composition of a 1394 LAN, such as addition or removal of a node. A router can be used to connect an 802.3 LAN segment and a 1394 LAN segment, but the dynamic nature of the data link layer addressing demands added complexity, as the router needs resources enabling it to find the current data link layer address. A standard for the use of IP version 4 over 1394 has not currently been finalised, but is under development by the Internet Engineering Task Force (IETF). The current position, indicating the requirements that would be placed on a node in a 1394 LAN communicating under IP (and hence on a router connecting a 1394 LAN to a LAN of a different type), is set out in the IETF Network Working Group Internet-Draft 11 xe2x80x9cIPv4 over IEEE 1394xe2x80x9d edited by P. Johansson of Congruent Software, Inc., 3998 Whittle Avenue, Oakland, Calif. 94602, USA. This Internet-Draft is expected to be adopted as a standard in the near future, at which point it should appear as an RFC with the same title.
It would be desirable to combine the simplicity of operation, the transparency to nodes and the ability to learn (rather than requirement for configuration) of a bridge, with the ability of a router to communicate between LAN segments of different network types. This is particularly valuable for a network essentially comprising a backbone of one LAN type with a number of branches of another type (for example, an 802.3 backbone with 1394 branches) for which a router-based solution would be expensive and inconvenient to administer.
Accordingly, in a first aspect the invention provides a network layer bridge for connection between network segments with different data link layer addressing, comprising: a plurality of ports, each for connection to a different network segment, wherein a first port is for connection to a first network segment and a second port is for connection to a second network segment; a memory for storing network layer addresses for nodes together with corresponding port identifiers and data link layer addresses, wherein the memory is adapted to store data link layer addresses of more than one type; means for discovering corresponding port identifier and data link layer address for a network layer address for which these are not already known; and means for forwarding a message from a first node connected through the first network segment to the first port to a second node connected through the second network segment to the second port when the corresponding port identifier and data link level address for both the first and second node are stored in the memory, wherein the message is addressed with the network layer address of the second node, and the network layer bridge directs the message through the corresponding port to the corresponding data link level address for the second node.
Such a network layer bridge is advantageous in that to the first and second nodes, the bridge is transparent: the nodes communicate as if directly between each other, even though they are on network segments with different data link layer addressing. In addition, the network layer bridge has the capacity to learn address information. The network layer bridge as defined above possesses key advantages of a conventional transparent bridge in a structure which can allow communication between network segments of different network types.
For the network layer bridge described above, it is not necessary for both, or either, of the first and second node to be connected directly to a network segment connected directly to a port of the network layer bridge. Instead, the relevant node may be connected to such a network segment through one or more network connection components, such as a router or a conventional transparent bridge. In the case of a router, an effective implementation is for the corresponding data link layer address held by the network layer bridge for any such remote node to be the data link layer address for the associated network connection component which is a node on such a network segment.
In particularly useful applications, a (or the) network layer protocol supported by the network layer bridge is the Internet Protocol. In this case, it is appropriate for the means for discovering corresponding port identifier and data link layer address for a network layer address for which these are not already known to be a means for forwarding or creating ARP messages.
A network layer bridge as described above is advantageously adapted for use where the first or second network segment has a data link layer with dynamic addressing. A particularly useful case of this is where the relevant network segment is in accordance with IEEE 1394-1995. In this case, it is advantageous for the memory in the network layer bridge to be adapted to store data link layer addresses for said data link layer with dynamic addressing which include NodeID and FIFO, and also UID (these terms are defined further below in the description of preferred embodiments). NodeID and FIFO enable effective routing of packets, whereas storage of UID is advantageous as the network layer bridge may then be adapted after a bus reset on the network segment with data link layer dynamic addressing to read the UID of each node on the network segment to reassociate the network layer address with the corresponding data link layer address for each node which is capable of supporting Internet Protocol on the network segment and which is known to the network layer bridge.
The distinctions between the present network layer bridge and the BLIP of EP-A2-0465201 are significant. Network layer bridges according to embodiments of the present invention do not base forwarding decisions on IP network/subnet addresses alonexe2x80x94they act as bridges, and propagate ARP requests. Nodes to either side of a network layer bridge may advantageously belong to the same network/subnet addressing domain, with the whole network layer address used to make forwarding decisions. Nodes may thus be moved between segments connected by a network layer bridge without difficultyxe2x80x94this is not possible for a BLIP without significant reconfiguration.
A further advantageous feature is for the network layer bridge to comprise means to determine whether an IP packet is too large to be transmitted across the bridge on to a receiving network segment, and to fragment the IP packet to a plurality of IP packet fragments of sufficiently small size for transmission on to the receiving network segment (a process defined in RFC 791).
For effective operation, it is desirable for the network layer bridge to have a mechanism to remove obsolete entries, otherwise the number of entries in the address table in the network layer bridge may become excessively large, leading to excessive memory requirements and possibly slow bridge operation. An advantageous solution is found if the memory comprises a timing means to determine a timing period from when a network layer address and corresponding data link layer address and port identifier was last used, wherein when the timing period for a network layer address is exceeded, the network layer address and corresponding data link layer address and port identifier are removed from the memory.
While advantageous, this timeout mechanism leads to some possibility that IP (or other network layer protocol, if appropriate) packets may arrive that cannot be forwarded because the target address data have been lost. To solve this problem, the network layer bridge may be adapted such that if an IP datagram with a target IP address for which the memory has no corresponding data link layer address or port identifier is received, a queue is provided in the memory to cache the IP datagram while the means for discovering the corresponding port identifier and data link layer address for a network layer address discovers the corresponding data link layer address and port identifier for the target IP address, whereupon the IP datagram can be forwarded. An appropriate choice is for the means for discovering the corresponding port identifier and data link layer address for a network layer address to be adapted to send an ARP request to all ports bar the originating one to discover the corresponding data link layer address and port identifier for the target IP address.
The network layer bridge itself may, or may not, have a network layer address. The advantage of having a network layer address is to allow management of the network layer bridgexe2x80x94the network layer address does not contribute to the basic function of the network layer bridge.
In a further aspect the invention provides a network, comprising a plurality of network segments, wherein said network segments are connected together by one or more network connection components, and one or more of the network connection components is a network layer bridge as described above.
Such a network may comprise a backbone of one data link layer type and one or more spurs of a different data link layer type, wherein the backbone is connected to each of the one or more spurs by a network layer bridge. A number of nodes may be connected to the backbone by a single network layer bridge, and there may be a number of network layer bridges attached to the backbone. A particularly useful example is for the backbone to be an IEEE 802.3 LAN segment and the one or more spurs IEEE 1394 LAN segments. Where there is a plurality of network level bridges in the network, it is particularly desirable for the network level bridges to be adapted to communicate to run a spanning tree algorithm to prevent loops arising in any portion of the network.
In a still further aspect, the invention provides a method of bridging between first and second network segments with different data link layer addressing, comprising: connecting the first network segment to a first port of a network layer bridge and the second network segment to a second port of the network layer bridge, the network layer bridge comprising a memory for retaining values for nodes of network layer address with a corresponding data link layer address and port identifier, wherein the memory is adapted to store data link level addresses of more than one type; a first node connected to the network layer bridge through the first network segment sending an address resolution message to elicit the corresponding data link layer address for a second node connected to the network layer bridge through the second network segment; storing in the memory the network layer address with the corresponding data link layer address and port identifier of the first node; sending through the second port an address resolution message to elicit the corresponding data link layer address and port identifier for the second node; once the network layer address, data link layer address and port identifier of the first node and second node are stored in the memory, transmitting messages between the first and second node by sending of a message from one said node with the network layer address of the other said node, and direction of the message by the network layer bridge to the other said node through the appropriate port to the appropriate data link layer address for the other said node.
In a further related aspect the invention also provides a method of bridging between first and second network segments with different data link layer addressing, comprising: connecting the first network segment to a first port of a network layer bridge and the second network segment to a second port of the network layer bridge, the network layer bridge comprising a memory for retaining values for nodes of network layer address with a corresponding data link layer address and port identifier, wherein the memory is adapted to store data link level addresses of more than one type; a first node connected to the network layer bridge through the first network segment sending a message with the network layer address of a second node connected to the network layer bridge through the second network segment; storing in the memory the network layer address with the corresponding data link layer address and port identifier of the first node, and recalling from the memory the corresponding data link layer address and port identifier for the second node (if already present in the memory); sending through the second port an address resolution message to elicit the corresponding data line layer address and port identifier for the second node if these are not present in the memory; once the network layer address, data link layer address and port identifier of the first node and second node are stored in the memory, transmitting the message from the first node to the second node through direction of the message by the network layer bridge to the second node through the appropriate port to the appropriate data link layer address for the second node.
The methods provided for by the two aspects mentioned above are not restricted to nodes on adjacent network segments connected by a network layer bridge. These methods are applicable to communication between any two nodes where the communication passes through a network layer bridge in respect of the stages of this communication that pass between the network layer bridge and the network segments attached to the network layer bridge. The nodes communicating may be connected with the network layer segments attached to the bridge indirectly, for example through other network connection components such as routers or transparent bridges. In particular, it is apparent how such methods may be used to connect to network segments with dynamic addressing such as TEEE1394 by use of appropriate network layer bridges as described above.